home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / rpg / crossfir.92 / crossfir / crossfire-0.92.5 / common / friend.c < prev    next >
C/C++ Source or Header  |  1996-07-24  |  2KB  |  79 lines

  1. /*
  2.  * static char *rcsid_friend_c =
  3.  *   "$Id: friend.c,v 1.4 1994/03/29 08:02:56 master Exp $";
  4.  */
  5.  
  6. /*
  7.     CrossFire, A Multiplayer game for X-windows
  8.  
  9.     Copyright (C) 1992 Frank Tore Johansen
  10.  
  11.     This program is free software; you can redistribute it and/or modify
  12.     it under the terms of the GNU General Public License as published by
  13.     the Free Software Foundation; either version 2 of the License, or
  14.     (at your option) any later version.
  15.  
  16.     This program is distributed in the hope that it will be useful,
  17.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.     GNU General Public License for more details.
  20.  
  21.     You should have received a copy of the GNU General Public License
  22.     along with this program; if not, write to the Free Software
  23.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  24.  
  25.     The author can be reached via e-mail to frankj@ifi.uio.no.
  26. */
  27.  
  28. #include <global.h>
  29.  
  30. /*
  31.  * Add a new friendly object to the linked list of friendly objects.
  32.  * No checking to see if the object is already in the linked list is done.
  33.  */
  34.  
  35. void add_friendly_object(object *op) {
  36.   objectlink *ol=first_friendly_object;
  37.   first_friendly_object=get_objectlink();
  38.   first_friendly_object->ob = op;
  39.   first_friendly_object->id = op->count;
  40.   first_friendly_object->next=ol;
  41. }
  42.  
  43. /*
  44.  * Removes the specified object from the linked list of friendly objects.
  45.  */
  46.  
  47. void remove_friendly_object(object *op) {
  48.   objectlink *this;
  49.   CLEAR_FLAG(op,FLAG_FRIENDLY);
  50.   if(first_friendly_object->ob!=op) {
  51.     objectlink *prev=first_friendly_object;
  52.     while(prev!=NULL&&prev->next!=NULL&&
  53.           (prev->next->ob!=op || prev->next->id != op->count))
  54.       prev=prev->next;
  55.     if(prev==NULL||prev->next==NULL||
  56.        prev->next->ob!=op||prev->next->id!=op->count) {
  57.       LOG(llevDebug,"Remove_friendly_object: Can't find object %s (%d).\n",
  58.           op->name,op->count);
  59.       return;
  60.     }
  61.     this=prev->next;
  62.     prev->next=this->next;
  63.   } else {
  64.     this=first_friendly_object;
  65.     first_friendly_object=this->next;
  66.   }
  67.   CFREE(this);
  68. }
  69.  
  70. /*
  71.  * Dumps all friendly objects.  Invoked in DM-mode with the G key.
  72.  */
  73.  
  74. void dump_friendly_objects() {
  75.   objectlink *ol;
  76.   for(ol=first_friendly_object;ol!=NULL;ol=ol->next)
  77.     LOG(llevError, "%s (%d)\n",ol->ob->name,ol->ob->count);
  78. }
  79.